import com.google.common.collect.Lists;

import java.util.BitSet;

public class BitSetExample {
	public static void main(String[] args) {
		BitSet bitSet = new BitSet(10); // 创建一个初始大小为10的BitSet对象

		// 设置指定索引处的位为true
		bitSet.set(2); // 将索引为2的位设置为true

		// 输出BitSet对象的内容
		System.out.println("BitSet内容：" + bitSet); // 输出结果：{2}

		// 遍历BitSet对象，输出各个位的值
		System.out.print("BitSet各位的值：");
		for (int i = 0; i < bitSet.length(); i++) {
			System.out.print(bitSet.get(i) ? "1" : "0"); // 如果位为true，则输出1，否则输出0
		}
		System.out.println(); // 输出换行

		// 设置多个索引处的位为true
		bitSet.set(5, true); // 将索引为5的位设置为true
		bitSet.set(8, true); // 将索引为8的位设置为true

		// 输出BitSet对象的内容
		System.out.println("更新后的BitSet内容：" + bitSet); // 输出结果：{2, 5, 8}

		// 遍历BitSet对象，输出各个位的值
		System.out.print("更新后的BitSet各位的值：");
		for (int i = 0; i < bitSet.length(); i++) {
			System.out.print(bitSet.get(i) ? "1" : "0"); // 如果位为true，则输出1，否则输出0
		}
		System.out.println(); // 输出换行


		cal1();
	}

	public static void cal1(){
		//查询请求  标签位 1 4 8
		BitSet queryBitSet = new BitSet(10);
		queryBitSet.set(1);
		queryBitSet.set(4);
		queryBitSet.set(8);
		System.out.println(queryBitSet);

		BitSet fullBitSet = new BitSet(10);
		for (int i = 0; i < 10; i++) {
			fullBitSet.set(i);
		}

		//字符类型
		String str="01010011";
		BitSet orderSet = new BitSet(10);
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '1') {
				orderSet.set(i); // 如果位图字符串的当前字符为'1'，则将对应索引处的位设置为true
			}
		}

		queryBitSet.and(fullBitSet);
		System.out.println(queryBitSet);
		System.out.println(orderSet);

	}

}
